原帖 | Jason | 2026-08-21 10:48 | 👍0 | 阅读约1
很多人不知道 Android 和 Linux(如 Ubuntu) 的关系,其实 Android 是基于 Linux 内核开发的,底层一样,上层文件系统不一样,如图所示。
我认为,你会 Linux 驱动开发,就几乎等同于会 Android 驱动开发。
内核层:两者底层都是 Linux。
普通 Linux:主线内核,社区维护。
Android:基于 ACK 内核,打了大量谷歌补丁,多出 binder、ashmem、lowmemorykiller、wakelock 这些安卓专属驱动,主线 Linux 默认没有。
用户态:
普通 Linux(Ubuntu/Debian)
- C库:glibc
- 初始化:systemd / busybox init
- 程序:gcc 编译 ELF,bash shell,apt 直接装软件
Android
- C库:bionic libc,不是 glibc。Ubuntu 编译出来的程序直接拷过来基本跑不起来
- 初始化:Android init + .rc 脚本,和systemd 不兼容
- APP 跑 ART 虚拟机,apk 格式;原生程序要用 NDK 编译
- shell 是 mksh,很多常用命令被砍掉
调试
-
Linux:串口、ssh,gdb、perf、strace 工具齐全,/proc /sys随便看
-
Android:主要用 adb;日志分 logcat(应用) 和 dmesg(内核);SELinux 限制多,就算root,很多节点依旧访问不了
选型
选标准 Linux:机器人、数采、网关,大量C/C++ 程序,需要 apt 装开源软件,不需要 apk。
选 Android:要跑 apk、触控屏幕,行业终端类产品,消费类电子行业 Android 居多。
Android 系统极度消耗内存,目前的内存价格贵,因此要多做考量。



相关笔记
- 📁 返回本主题 MOC
- 从MCU转Linux BSP开发
- 设备树反编译调试
- Linux BSP问题闭环流程
- 嵌入式 Linux 橙皮书系列更新 v2.0.0 版本
- Linux驱动工程师工作日常
- DDR替换后内核崩溃排查